package com.base.cn.platform.os.entity.course.cou.buy;

import com.base.cn.platform.os.common.mybatis.BaseEntity;
import com.base.cn.platform.os.common.mybatis.SqlExclude;
import com.base.cn.platform.os.entity.course.catalog.CourseCatalog;
import com.base.cn.platform.os.entity.course.cou.Course;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 课程购买记录
 *
 * @author s.li
 * @create 2018-05-17-14:10
 */
@Data
public class CourseBuyRecord extends BaseEntity {
    /**订单ID*/
    private BigDecimal orderId;
    /**订单号*/
    private String orderNo;
    /**流水ID*/
    private BigDecimal detailsId;
    /**支付类型*/
    private String payType;
    /**价格*/
    private Double price;
    /**用户ID*/
    private BigDecimal userId;
    /**课程ID*/
    private BigDecimal courseId;
    /**课程有效期类型，1时间段，2天数，不可修改*/
    private Integer validType;
    /**有效天数，用于validType=2*/
    private Integer validDay;
    /**过期段，用于validType=1*/
    private Date validTime;
    /**课程类型*/
    private String courseTypeKey;
    /**状态，SUCCESS可使用，REFUND退费，CLOSE关闭*/
    private String courseStatus;
    /**
     *
     */
    private String validHint;

    /**
     * status 激活状态，0未激动，1已激活（套餐类型课程需要激活）
     */

    //===================
    private Course course;
    //套餐激活的课程列表
    private List<CourseBuyPackageCourse> courseBuyPackageCourseList;
    //课程ID串
    private String courseIds;
    //播放套餐默认的课程下标
    private int index;
    //学习进度
    private String studySpeed = "0.00";
    //课程学习总时长
    private int studySumTime = 0;
    //课程一周学习总时长
    private int weekStudyTime = 0;
    //最后学习的目录对象
    private CourseCatalog lastCourseCatalog;
    //课程总时长
    private int totleTimes = 0;
    /***
     * 学员对象
     */
    private Map<String,Object> user;
    /**
     * 是否查询未过期的
     */
    private boolean notExpired;
    /**
     * 是否拥有随堂练习
     */
    @SqlExclude
    private boolean practiceHave;
    /**
     * 查询条件开课时间开始
     */
    @SqlExclude
    private String startTime;
    /**
     * 查询开课时间结束
     */
    @SqlExclude
    private String endTime;
    /**
     * 是否包含已过期课程
     * true 不包含，false 包含
     */
    @SqlExclude
    private boolean expire;

    public boolean isActivated() {
        if(getStatus()==null){
            return false;
        }
        return 1 == getStatus();
    }
}
